package cn.shadow.game.chess.CHnchess.chessman;


import cn.shadow.game.chess.CHnchess.board.Board;
import cn.shadow.game.chess.CHnchess.board.Position;
import cn.shadow.game.chess.CHnchess.type.Camp;
import cn.shadow.game.chess.CHnchess.type.ChessType;
import cn.shadow.proto.client.CHnChessClientProtoContent;

import java.util.List;

/**
 * 棋子对象
 */
public interface Chess {
    /**
     * @return 返回可以走的集合
     */
    List<Position> getCanSetPosition();

    Camp getCamp();

    void setPosition(Position point);

    ChessType getType();

    boolean isChosen();

    void setChosen(boolean chosen);

    Position getPosition();

    boolean isBlack();

    List<Position> getCanAttackPosition();

    Board getBoard();

    Chess copy(ChessType type, Board board, Camp camp);

    int getRow();

    int getCol();

    CHnChessClientProtoContent.ChessMsg chessMsg();
}
